/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package ModuloConfiguracion;

import Acceso.Security;
import java.io.PrintWriter;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.json.JSONObject;
import org.json.JSONArray;
import Modelo.PuestoVigilancia;
import Modelo.Espacio;
import Modelo.DAL.PuestoVigilancia_DAO;

/**
 *
 * @author andres
 */
public class ModifPuestoDeVigAction extends org.apache.struts.action.Action {

    private static final String SUCCESS = "success";
    private static final String FAILURE = "failure";
    private static final String[] ALLOWED = {"Administrador"};

    @Override
    public ActionForward execute(ActionMapping mapping, ActionForm form,
            HttpServletRequest request, HttpServletResponse response)
            throws Exception {

        if (!Security.validateSession(request, ALLOWED)) {
            Security.privilegeError(response);
            return mapping.findForward("errorPriv");
        }

        ModifPuestoDeVigForm mpvf = (ModifPuestoDeVigForm) form;

        String flag = request.getParameter("flag");
        if ((flag != null) && flag.equals("ida")) {
            System.out.println("entro en el flag ida");


            String id_puesto = mpvf.getId();

            String select = "SELECT p.id_puesto_vigilancia, p.puesto,a.descripcion,p.nombre_sede, e.coordx,e.coordy,p.estado_puesto,(Select count(*) from puesto_vigilancia where 1 = 1) FROM puesto_vigilancia p,espacio e,area a WHERE p.puesto = e.nombre_espacio AND p.id_area = e.id_area AND p.nombre_sede = e.nombre_sede AND a.id_area = p.id_area AND p.nombre_sede = a.nombre_sede AND id_puesto_vigilancia = " + id_puesto;

            response.setContentType("text/json");
            System.out.println(select);
            PuestoVigilancia_DAO pvDao = new PuestoVigilancia_DAO();
            JSONArray puestoVig = pvDao.consultarPuestoVigTabla(select);
            System.out.println("PtoVif " + puestoVig);

            if (puestoVig == null) {
                mpvf.setError("");
                mpvf.setSubmit("");
                mpvf.setReset("");
                return mapping.findForward(FAILURE);
            }
            JSONObject puestoVigi = new JSONObject();
            puestoVigi.put("modificarPuestoVigilanciaIda", puestoVig);
            PrintWriter pw = response.getWriter();
            pw.write(puestoVigi.toString());
            pw.flush();
            pw.close();

            mpvf.setError("");
            mpvf.setSubmit("");
            mpvf.setReset("");
            return mapping.findForward(FAILURE);
        }
        // Necesario para llenar le formulario

        // Necesario para modificar el objeto
        String submit = mpvf.getSubmit();
        //System.out.println("\n\n\n---------------\n TIPO = "+mpvf.getTipoInspeccion()+"\n-----------\n\n\n");
        if ((submit != null) && submit.equals("submit")) {

            // Necesario para resetear el formulario
            String reset = mpvf.getReset();
            if ((reset != null) && reset.equals("si")) {
                System.out.println("RESETEAR!!!!!");
                mpvf.reset(mapping, request);
                mpvf.setError("");
                mpvf.setSubmit("");
                mpvf.setReset("");
                return mapping.findForward(FAILURE);
            }
            mpvf.setReset("si");
            // Necesario para resetear el formulario

            System.out.println("entro en el flag submit");

            String idPuestoVig = mpvf.getId();
            String nombrePuesto = mpvf.getNombrePuesto();
            String puesto = mpvf.getNew_puesto();
            String id_area = mpvf.getNew_area();
            String sede = mpvf.getNew_sede();
            String coordX = mpvf.getNew_coordx();
            String coordY = mpvf.getNew_coordy();
            System.out.println(idPuestoVig + " " + puesto + " " + id_area + " " + sede + " " + nombrePuesto);
            //System.out.println("\n\n---------------\n tipoIns = "+tipoInspeccion+"\n-----------\n\n");

            if (puesto == null || puesto.equals("")) {
                mpvf.setSubmit("");
                mpvf.setReset("");
                mpvf.setError("Debe colocar un nombre para el Puesto de Vigilancia. Intente Nuevamente.");
                return mapping.findForward(FAILURE);
            }


//********************************************************************************

            if (id_area == null || id_area.equals("") || id_area.equals("'NA'")) {
                mpvf.setSubmit("");
                mpvf.setReset("");
                mpvf.setError("Debe seleccionar una area. Intente Nuevamente");
                return mapping.findForward(FAILURE);
            }

            if (sede == null || sede.equals("")) {
                //System.out.println("\n\n\n -------------------- \ntipoInspeccion = "+tipoInspeccion+"\n----------------\n\n\n");
                mpvf.setSubmit("");
                mpvf.setReset("");
                mpvf.setError("Debe seleccionar una sede. Intente Nuevamente.");
                return mapping.findForward(FAILURE);
            }

            //int nroInspeccion = Integer.parseInt(numeroInspeccion);
            // numeroInspeccion
            System.out.println("Entro........................");
            PuestoVigilancia puestoVig = new PuestoVigilancia(idPuestoVig, puesto, id_area, sede);
            Espacio espacio = new Espacio(nombrePuesto, Short.parseShort(idPuestoVig), id_area, sede, "PtoVig", nombrePuesto, coordX, coordY);
            if (Modelo.DAL.PuestoVigilancia_DAO.actualizarPuestoVigilancia(puestoVig, espacio)) {
                mpvf.reset(mapping, request);
                mpvf.setError("");
                mpvf.setSubmit("");
                mpvf.setReset("");
                return mapping.findForward(SUCCESS);
            } else {
                mpvf.setError("Error modificando el puesto de vigilancia.");
                mpvf.setSubmit("");
                mpvf.setReset("");
                return mapping.findForward(FAILURE);
            }
        }

        //  Necesario para la primera ejecucion de la pagina y guardar el id del objeto
        String id_Puesto = request.getParameter("id_puestoVig");
        System.out.println("\n\nid_puestoVig primera = " + id_Puesto + "\n\n");
        mpvf.setId(id_Puesto);
        mpvf.setError("");
        mpvf.setSubmit("");
        mpvf.setReset("");
        return mapping.findForward(FAILURE);
        //  Necesario para la primera ejecucion de la pagina y guardar el id del objeto
    }
}
